home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
86xx
/
8605.d64
/
epson plotter
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
5KB
|
143 lines
1 REM *********************************
2 REM * *
3 REM * EPSON PLOTTER *
4 REM * *
5 REM * C-64 + EPSON RX 80 (F/T+) *
6 REM * (+ INTERFACE) *
7 REM * *
8 REM *********************************
9 REM * *
10 REM* VOLKER RAUM *
11 REM* NOETHERSTRASSE 20A *
12 REM* 8520 ERLANGEN *
13 REM* 09131/65511 *
14 REM* *
15 REM*********************************
16 :
17 :
30 REM "[147] = SHIFT+CLR/HOME
32 [143] " = CURSOR DOWN
34 REM "[154] = C= + 7
36 [143] " = CTRL + 7
38 REM "[157] = CURSOR LEFT
40 [139][194](49152)[179][177]165[167][147]"PLOTTER MASCH",8,1:[143] LADEN DRUCKERAUSGABE
42 [151]53281,6
44 [158]49289 :[143] LOESCHEN DES AUSGABEPUFFERS
46 [156]
48 [153]"LOADCONT PLOTTER "
50 [153]" C-64 <-> RX-80 (F/T)"
52 [153]" EINE BEL. FUNKTION F(X) WIRD AUF"
54 [153]" DEM DRUCKER AUSGEDRUCKT."
56 [133]" F(X) = ";F$:[139]F$[178]""[167]74:[143] EINGABE DER FUNKTION
58 [153]"LOAD10000 DEFFNF(X)=";F$
60 [153]"10010 F$="[199](34);F$;[199](34)
62 [153]"GOTO74
64 POKE631,19:POKE632,13:POKE633,13:POKE634,13:POKE198,4:END
66 REM
68 REM FUNKTION IN DEFFNF EINSETZEN UND F$ ZURUECKSETZEN
70 REM *** PROGRAMMIERTER DIREKTMODUS ***
72 REM
74 DIM SW(200):REM SCHARPARAMETER
76 GOSUB 10000:PRINT"[154]":REM DEFFNF AUSFUEHREN
78 PRINT"[147] F(X) = ";F$
80 PRINT" ANGABE DES DEFINITIONSBEREICHES :"
82 INPUT" XA,XE : -5,5 [157][157][157][157][157][157][157][157][157][157][157][157][157]";XA,XE
83 IFXA>XE THENPRINT"[145][145]";:GOTO82
84 INPUT" YA,YE : -5,5 [157][157][157][157][157][157][157][157][157][157][157][157][157]";YA,YE
85 IFYA>YE THENPRINT"[145][145]";:GOTO84
86 REM DEFINITIONS UND WERTEBEREICH VON F(X)
88 PRINT" AUFLOESUNG Y-RICHTUNG :"
90 PRINT" 0) 480 EINZELPUNKTE"
92 PRINT" 1) 960 EINZELPUNKTE"
94 PRINT" 2) 960 EINZELPUNKTE DOPPELTE GESCH."
96 PRINT" 3) 1920 EINZELPUNKTE "
98 PRINT" 4) 640 EINZELPUNKTE "
100 PRINT" 5) 720 EINZELPUNKTE "
102 INPUT" AUFLOESUNG : 0[157][157][157]";A1
104 IF A1=0THENAF=480
106 IF A1=1THENAF=960
108 IF A1=2THENAF=960
110 IF A1=3THENAF=1920
112 IF A1=4THENAF=640
114 IF A1=5THENAF=720:A1=6
116 IFA1>5GOTO102
118 POKE2,A1
120 REM
122 REM AUFLOESUNG FUER DRUCKER EINGEBEN (Y-RICHTUNG)
124 REM UEBERGABE DIESER AUFLOESUNG AN DAS MASCH.PROG.
126 REM
128 PRINT"[147] F(X) = "F$
130 PRINT" BREITE DER X-ACHSE AUF DEM DRUCKER"
132 PRINT" IN PUNKTEN"
134 INPUT" AUFLOESUNG : 480[157][157][157][157][157]";A2
135 A2=A2-1
136 REM ANGABE DER LAENGE DES AUSDRUCKS A2/8=ZEICHEN
138 INPUT"[147] IST F(X) EINE FUNKTIONENSCHAR N[157][157][157]";FS$
140 IF FS$="N"THEN150
142 SC=1:PRINT
144 PRINT" A("SC")= ";:INPUT GF$
146 IFGF$="ENDE"THEN150
148 SW(SC)=VAL(GF$):SC=SC+1:GOTO144
150 REM FALLS SCHAR,DANN ANGABE DER PARAMETER
152 DY=ABS(YE-YA)/AF:REM 1PUNKT=?X
154 DX=ABS(XE-XA)/A2:REM SCHRITTWEITE
156 REM EINHEITEN DER X-UND Y-ACHSE
158 LX=(-YA*AF/(YE-YA))
160 LY=INT((-XA*A2/(XE-XA))+.5)+1
162 IFLX<0ORLX>480 THENLX=-1
164 IFLY<0ORLY>480 THENLY=-1
166 IFLX=-1THEN172
168 REM FESTLEGUNG DER LAGE DER ACHSEN
170 FORI=LYTO1STEP-30:OF=I:NEXT:REM BEGINN DER SKALENEINTEILUNG
172 REM START DES PLOTTENS
174 REM ******************
176 OPEN1,4:PRINT#1,CHR$(27);"3";CHR$(20);
178 PRINT#1,"F(X)="F$:PRINT#1
180 PRINT#1,"DX="30*DX" DY="30*DY:PRINT#1
182 PRINT#1,"XA,XE = ("XA","XE")":PRINT#1
184 PRINT#1,"YA,YE = ("YA","YE")":PRINT#1
186 IFFS$="J"THENPRINT#1,"A = ("SW(1);
188 IFFS$="J"THENFORI=2TOSC-1:PRINT#1,","SW(I);:NEXT:PRINT#1,")"
190 REM AUSDRUCK DER FUNKTION,DEFINITIONS,WERTEBEREICH,EINHEITEN DER X,Y ACHSE
192 REM GEGEBENFALLS SCHARPARAMETER
194 CMD1:REM AUSGABE KOMPLETT AUF DRUCKER,NOTWENDIG FUER MASCH.PROG.
196 BY=0:KU=-1:CO=XA-DX:FORI=1TOA2STEP8:BI=256:REM BEGIN DER PLOTSVCHLEIFE
198 IFFS$="J"THENFORAQ=1TOSC-1:REM FALLS SCHAR DANN ALLE PARAMETER
200 FORU=ITOI+7:CO=CO+DX:BI=BI/2:REM SCHRITTE ZU 8 FUER AUSDRUCK AUF DRUCKER
202 IFFS$="J"THENA=SW(AQ):REM SCHARPARAMETER
204 POKE768,112:POKE769,168:YI=FNF(CO):REM AUSSCHALTEN DER FEHLERMELDUNG
206 REM UND BESTIMMUNG DES FUNKTIONSWERTES
208 RY=INT(((YI-YA)*(AF-1)/(YE-YA))+.5):REM UMRECHNEN DES FUNKTIONSWERTES
210 POKE768,139:POKE769,227:REM FEHLERMELDUNG FREI GEBEN
212 IFRY<0ORRY>AFTHEN216:REM FUNKTIONSPUNKT EINZEICHNEN ?
214 POKERY+49920,PEEK(49920+RY)ORBI:REM PUNKT AN AUSGABEPUFFER GEBEN
216 IFKU>=0THENKU=KU+1:REM ZAEHLER FUER EINTEILUNG DER X-ACHSE
218 IFU=LYTHENBY=BI
220 IFU=OFTHENKU=0
222 IF(KU/30)=INT(KU/30)THENVR=1:PO=BI:REM SKALENEINTEILUNG ?
224 NEXTU:IFFS$="J"THENKU=KU-8:CO=CO-8*DX:BI=256:NEXTAQ:CO=CO+8*DX:KU=KU+8
226 REM 8PUNKTE FERTIG MACHEN,DANN EV. ALLE SCHARPARAMETER DURCHLAUFEN LASSEN
228 IFLX=-1THENSYS49152:NEXTI:GOTO240:REM AUSGABE AUF DRUCKER
230 POKE49920+LX,255:REM X-ACHSE SETZEN
232 IFVR=1THENFORQ=-1TO1:POKE49920+LX+Q,PEEK(49920+LX+Q)ORPO:NEXT:VR=0
234 REM SKALENEINTEILUNG
236 IFBY<>0THENGOSUB244:REM Y-ACHSE AUSGEBEN
238 SYS49152:NEXTI:REM DRUCKEN
240 PRINT#1:CLOSE1:REM KANAL SCHLIESSEN
242 GOTO46:REM NEUE FUNKTION
244 REM
246 FORV=49920TO49920+AF:POKEV,(PEEK(V) OR BY):NEXTV
248 IFLX=-1THENRETURN
250 B1=BY/2:IFB1<1THENB1=0
252 B2=BY/4:IFB2<1THENB2=0
254 B3=BY*2:IFB3>128THENB3=0
256 B4=BY*4:IFB4>128THENB4=0
258 AG=B1+B2+B3+B4
260 FORZX=0TO(AF-LX)STEP30:POKE49920+LX+ZX,PEEK(49920+LX+ZX)ORAG:NEXT
262 FORZX=0TOLXSTEP30:POKE49920+LX-ZX,PEEK(49920+LX-ZX)ORAG:NEXT
264 BY=0:RETURN
266 REM Y-ACHSE AUSGEBEN UND SKALENEINTEILUNG VORNEHMEN
10000 DEFFNF(X)=X
10010 F$="X"
10020 RETURN